#include <stdio.h>
#include <stdlib.h>
#include "Emulador.h"
#include "Procesador.h"

int main(void)
{
    if(LoadCart("D:\\Pajaro\\Emuladores\\GB\\roms\\175 Sprite Parallax Starfield Demo (PD) [C].gb")) printf("Error!");
    printf("Iniciando emulacion...");
    ResetCPU();
    LaunchEmulation();

    printf("\n\nSaliendo...");
    return 0;
}

////////////////////////////////////////////////////////////////////

int LoadCart(char* FileName)
{
    FILE* Archivo = fopen(FileName, "rb");
    if(!Archivo) return 1;
    ROM = (BYTE *)malloc(0x10000);
    if(!ROM) return 2;
    memset(ROM, 0, 0x10000);
    fread(ROM, 1, 0x8000, Archivo);
    fclose(Archivo);

    return 0;
}

////////////////////////////////////////////////////////////////////

void LaunchEmulation(void)
{
    BYTE Opcode, EmulatorRunning;
    int tecla;

    EmulatorRunning = 1;
    while(EmulatorRunning)
    {
        Opcode = ROM[PC];
        RunInstruction(Opcode);

        if(PendingInterruptsDisabled > 0) PendingInterruptsDisabled--;

        while(kbhit())
        {
            tecla = getch();
            if(tecla == 27)
            {
                free(ROM);
                EmulatorRunning = 0;
            }
        }
    }

    return;
}
